<?php
/**
 * 
 * Grafico de Venta CSA 
 *  1) grafico de Inbound/Seguimientos
 *  2) grafico de Inbound/Ventas
 *  3) grafico de Inbound Por Agentes de CSA
 *  4) grafico de Seguimiento Por Agentes de CSA
 *  5) grafico de Todos lo CSA en Grafico de Varas
 * 
 * @author natanael
 *
 */
class graficoVenta extends Controller 
{
	private $_numeroSemana = 9;
	
	public function __construct()
	{ 
		parent::Controller();
		$this->load->database();
		$this->load->library(array('chgraficos','chcalendario'));
		$this->load->model(array('mtransaccionentrada','detallerentradas','mregistro','usuarios','TransaccionHistorico','mgraficov'));

        if($this->input->post('numeroS') == 0 || $this->input->post('numeroS') == 9){
			$this->_numeroSemana = 9;			
		 }else{
			$this->_numeroSemana = $this->input->post('numeroS');
		 }
	}
	
	public function index()
	{
		
		$this->load->view('main', array('content_page'    => 'graficoVentas',
		                                'menutop'         => 5,
		                                'var'             => $this->getSalesByProdCatXML(),
		                                'var2'            => $this->inboundVenta(),
		                                'csaAeguimiento'  => $this->generalXmlAgentesCSASeguimientos(),
		                                'csaInbauin'      => $this->generalXmlAgentesCSA(),
		                                'ventaCSAPz'      => $this->ventasUseNegosio(),
		                                'semanaf'         => $this->_numeroSemana,
		                                'pizzaInbaun'     => $this->pizaCsaVentas(1),
		                                'pizzaSegui'      => $this->pizaCsaVentas(2),
		                                'pizzaVesta'      => $this->pizaCsaVentas(3)));
	}
	

	
    public function getSalesByProdCatXML() {
	
	$cadena = $this->chcalendario->ultimo($this->chcalendario->semana(3));
	
	$cadena = explode('+',$cadena);
	
	$ors['CategoryID'] = 22;

	      $strCat = "<categories>";

	           $strAmtDS = "<dataset seriesname='Inbound'>";
          	    $strQtyDS = "<dataset seriesName='Seguimiento Inbound' parentYAxis='S'>";

          	         for ($i = 0;$i < $this->_numeroSemana; $i++)
          	         {   
          	         	   $elemento = $this->_numeroSemana - 1;
          	         	   $var = $elemento - $i;
          	         	   
          	         	    $semana = date('W')-$var;
          	         	   
          	         	   
          	         		$cadena = $this->chcalendario->ultimo($this->chcalendario->semana($var));
	                        $cadena = explode('+',$cadena);
	                        
	                        if (date("w") == 1){
	                        	$inicioDate = $cadena[1];
	                        }else{
	                        	$inicioDate = $cadena[0];
	                        }
	                        
	                        if ($i == $this->_numeroSemana-1) {
	                        	  $arrayWhereH = array('FechaSistema >=' => $inicioDate);
	                              
	                              $arrayWhereR = array('DateSistema >=' => $inicioDate); 
	                              $cantidad = $this->detallerentradas->LoadDetalleCantidadFiltro($inicioDate, date("Y-m-d"));
	                        }else{
	                        	
	                              $arrayWhereH = array( 'FechaSistema >=' => $cadena[0],
	                                                    'FechaSistema <=' => $cadena[1]);
	                              
	                              $arrayWhereR = array( 'DateSistema >=' => $cadena[0],
	                                                    'DateSistema <=' => $cadena[1]); 
	                        	  $cantidad = $this->detallerentradas->LoadDetalleCantidadFiltro($cadena[0],$cadena[1]);
	                        }

	                        $cantidar = $this->mtransaccionentrada->loadCantByWhere($arrayWhereR);
	                        $cantidah = $this->TransaccionHistorico->loadCantByWhere($arrayWhereH);
	                        
	                        $cantida1 = $cantidar + $cantidah; 
	                        
	                        if ($semana <= 0) {
	                        	$semanatitle = 52 + $semana; 
	                        }else{
	                        	   $semanatitle = $semana;
	                        }
	                     
	                        
	                        
          	         	$strCat .= "<category label='".$semanatitle."'/>";
                        $strAmtDS .= "<set value='".$cantida1."' />";
                        $strQtyDS .= "<set value='".$cantidad."'/>";
          	         }
          	        
         
	                	
                            
	         $strCat .= "</categories>";
	         
	                 
	                     
	                     
	                     
	$strAmtDS .= "</dataset>";
	$strQtyDS .= "</dataset>";

	$strXML2 = $strCat . $strAmtDS . $strQtyDS;
	$strXML  = "<chart caption='Inbound Por Semanas' palette='' animation='' formatNumberScale='0' PYAXisName='Inbound' SYAxisName='Seguimiento Inbound' numberPrefix='' labeldisplay='STAGGER' seriesNameInToolTip='0' showValues='0' plotSpacePercent='0'>";
    $strXML.=$strXML2;
    $strXML .= "<styles><definition><style type='font' name='CaptionFont' size='15' color='' /><style type='font' name='SubCaptionFont' bold='0' /></definition><application><apply toObject='caption' styles='CaptionFont' /><apply toObject='SubCaption' styles='SubCaptionFont' /></application></styles>";
	$strXML .= "</chart>";

	return $this->chgraficos->renderChart(base_url()."public/swf_charts/MSColumn3DLineDY.swf", "fdg",$strXML, "CatCum", 750,300, false, false);
	
}

function inboundVenta(){
	
	$intYear = 1996;
	$addJSLinks = true;
	$forDataURL= false;
	
	$cadena = $this->chcalendario->ultimo($this->chcalendario->semana(3));
	$cadena = explode('+',$cadena);
	$cantida1 = $this->mtransaccionentrada->LoadTransacionCantidadFiltro($cadena[0],$cadena[1]);
	
	
	$ors['CategoryID'] = 22;

	      $strCat = "<categories>";

	           $strAmtDS = "<dataset seriesname='Inbound'>";
          	    $strQtyDS = "<dataset seriesName='Ventas' parentYAxis='S'>";

          	         for ($i = 0;$i < $this->_numeroSemana;$i++)
          	         {   
          	         	   $elemento = $this->_numeroSemana - 1;
          	         	   $var = $elemento - $i;
          	         	   
          	         	   $semana = date('W')-$var;
          	         		$cadena = $this->chcalendario->ultimo($this->chcalendario->semana($var));
	                        $cadena = explode('+',$cadena);
	                        
          	                if (date("w") == 1){
	                        	$inicioDate = $cadena[1];
	                          }else{
	                        	 $inicioDate = $cadena[0];
	                          }
	                        
	                        if ($i == $this->_numeroSemana-1) {
	                        	$arrayWhereH = array('FechaHistorico >=' => $inicioDate,
                       	                             'IdMotivoSalida' => 6);
	                              
	                            $arrayWhereR = array('DateSistema >=' => $inicioDate); 
	                     
	                            $arrayWhere = array('FechaSistema >=' => $inicioDate); 
	                        }else{
	                         $arrayWhereH = array( 'FechaHistorico >=' => $cadena[0],
	                                               'FechaHistorico <=' => $cadena[1],
                       	                           'IdMotivoSalida' => 6);
	                              
	                         $arrayWhereR = array( 'DateSistema >=' => $cadena[0],
	                                                'DateSistema <=' => $cadena[1]); 
	                     
	                         $arrayWhere = array( 'FechaSistema >=' => $cadena[0],
	                                              'FechaSistema <=' => $cadena[1]); 
	                        	
	                        }
	                          	
                       	     
	                  
	                     
                       	    $cantisa = $this->mtransaccionentrada->loadCantByWhere($arrayWhereR);
	                        $cantida1 = $this->TransaccionHistorico->loadCantByWhere($arrayWhereH);
	                        $cantida2 = $this->TransaccionHistorico->loadCantByWhere($arrayWhere);
	                        
	                        $cantisa += $cantida2;  
	                        
	                         if ($semana <= 0) {
	                         	$semanatitle = 52 + $semana;
	                         }else{
	                         	 $semanatitle = $semana;
	                         }
	                        
       
          	         	$strCat .= "<category label='".$semanatitle."'/>";
                        $strAmtDS .= "<set value='".$cantisa."' />";
                        $strQtyDS .= "<set value='".$cantida1."'/>";
          	         }
          	         
         
	                	
                            
	         $strCat .= "</categories>";
	         
	                 
	                     
	                     
	                     
	$strAmtDS .= "</dataset>";
	$strQtyDS .= "</dataset>";

	$strXML2 = $strCat . $strAmtDS . $strQtyDS;
	$strXML  = "<chart caption='Inbound Vs Ventas' palette='' animation='' formatNumberScale='0' PYAXisName='Inbound' SYAxisName='Ventas' numberPrefix='' labeldisplay='STAGGER' seriesNameInToolTip='0' showValues='0' plotSpacePercent='0'>";
    $strXML.=$strXML2;
    $strXML .= "<styles><definition><style type='font' name='CaptionFont' size='15' color='' /><style type='font' name='SubCaptionFont' bold='0' /></definition><application><apply toObject='caption' styles='CaptionFont' /><apply toObject='SubCaption' styles='SubCaptionFont' /></application></styles>";
	$strXML .= "</chart>";
	

	return $this->chgraficos->renderChart(base_url()."public/swf_charts/MSColumn3DLineDY.swf", "fdg",$strXML, "InboundVentas", 750,300, false, false);
	 
}

function generalXmlAgentesCSASeguimientos(){
	 
	
	$usuario = $this->usuarios->LoadUsuarioByIdDep(2);

	
		 
	$categoria = '<categories >';
	for ($index = $this->_numeroSemana; $index >= 0 ; $index--) {
		  $var = 1;
		 
		  $semana = date('W') - $index;
		  
		  if ($semana <= 0) {
		  	$semanatitle = 52 + $semana;
		  }else{
		     $semanatitle = $semana;  
		  } 
		  
		 
		   $fecha = $this->chcalendario->ultimo($this->chcalendario->semana($index));
		   $fechar = explode('+',$fecha);
		   $categoria .= "<category label='".$semanatitle."' />";
	}	
	$categoria .= '</categories>';    
 
	       $use = '';
	       $cantidadTotal = 0;
		   foreach ($usuario as $k){
		       
                
		      	$use .= "<dataset seriesName='".$k->getNombreUsuario()."' color='".$k->getColor()."' anchorBorderColor='".$k->getColor()."' anchorBgColor='#ffffff'>";
		      	
		        for ($index = $this->_numeroSemana; $index >= 0 ; $index--) {
		        	
		                $fecha = $this->chcalendario->ultimo($this->chcalendario->semana($index));
		                $fechar = explode('+',$fecha);
		                
		                if ($index == 0) {
		                     if (date("w") == 1){
	                        	$inicioDate = $fechar[1];
	                          }else{
	                        	 $inicioDate = $fechar[0];
	                          }
		                	
		                		$cantida = $this->detallerentradas->LoadDetalleCantidadFiltro($inicioDate,date("Y-m-d"),$k->getIdUsuario());
		                }else{
		                		$cantida = $this->detallerentradas->LoadDetalleCantidadFiltro($fechar[0],$fechar[1],$k->getIdUsuario());
		                }
		                
		        	  	
		        	  	$use .= "<set value='".$cantida."' />";
		        	  	$cantidadTotal += $cantida;
		            
		            
	             }
	             
	         	$use .= "</dataset>";   
		      	
		   }

		  $porcientos = ($cantidadTotal / $this->_numeroSemana)/ count($usuario);

		$cabeza = "<chart caption='Seguimientos Agentes CSA' subcaption='' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2'   divLineAlpha='20' divLineColor='006397' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='666666' shadowAlpha='40' labelStep='2' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,006397' bgAngle='270' bgAlpha='10,10'>";
  $piez = "<styles>                
		<definition>
                         
			<style name='CaptionFont' type='font' size='12'/>
		</definition>
		<application>
			<apply toObject='CAPTION' styles='CaptionFont' />
			<apply toObject='SUBCAPTION' styles='CaptionFont' />
		</application>
	</styles>
	
	<trendlines>
      <line startValue='".$porcientos."' color='91C728' displayValue='Target' showOnTop='2'/>
    </trendlines>

</chart>";
  
  
  $cuerpo = $cabeza.$categoria.$use.$piez;

  return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/MSLine.swf", "ChartId54",$cuerpo, "sACsa", 750,350, 0, 0);
 			
}

function generalXmlAgentesCSA(){
	
	$usuario = $this->usuarios->LoadUsuarioByIdDep(2);
		
	$categoria = '<categories>';
	for ($index = $this->_numeroSemana; $index >= 0 ; $index--) {
		  $var = 1;
		  
		  $semana = date('W') - $index;
		  
		  if ($semana <= 0) {
		  	$semanatitle = 52 + $semana;
		  }else{
		     $semanatitle = $semana; 
		  }
		  
		  
		   $fecha = $this->chcalendario->ultimo($this->chcalendario->semana($index));
		   $fechar = explode('+',$fecha);
		    $categoria .= "<category label='".$semanatitle."' />";
	}	
	
	
	$categoria .= '</categories>';    

	       $use = '';
	       $cantidadTotal = 0;
	       
		   foreach ($usuario as $k){
		       
                
		      	$use .= "<dataset seriesName='".$k->getNombreUsuario()."' color='".$k->getColor()."' anchorBorderColor='".$k->getColor()."' anchorBgColor='#ffffff'>";
		      	
		        for ($index = $this->_numeroSemana; $index >= 0 ; $index--) {
		        	
		                $fecha = $this->chcalendario->ultimo($this->chcalendario->semana($index));
		                $fechar = explode('+',$fecha);
		                
		                if ($index == 0) {
		                	$fechaR1 = $fechar[0];
		                	$fechaR2 = date("Y-m-d");
		                   
		                  if (date("w") == 1){
		                	   $fechaR1 = $fechar[1];
		                	
		                   }
		                	
		                }else{
		                	$fechaR1 = $fechar[0];
		                	$fechaR2 = $fechar[1];
		                }
		                
		                
		                
		                 $arrayWhereH = array( 'FechaSistema >=' => $fechaR1,
	                                           'FechaSistema <=' => $fechaR2,
		                                       'IdUsuario'       => $k->getIdUsuario());
	                              
	                     $arrayWhereR = array( 'DateSistema >=' => $fechaR1,
	                                           'DateSistema <=' => $fechaR2, 
	                                           'IdUsuario'      => $k->getIdUsuario()); 
	                     
                       	    $cantidar = $this->mtransaccionentrada->loadCantByWhere($arrayWhereR);
	                        $cantidah = $this->TransaccionHistorico->loadCantByWhere($arrayWhereH);
	                        
	                    $cantida = $cantidar + $cantidah;  
		                
		        	  	
		        	  	$use .= "<set value='".$cantida."' />";
		        	  	
		            $cantidadTotal += $cantida;
		            
	             }
	             
	         	$use .= "</dataset>";   
		      	
		   }
		   
		   $porcen = ($cantidadTotal / $this->_numeroSemana) / count($usuario);

		$cabeza = "<chart caption='Inbound Agentes CSA' subcaption='' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2'   divLineAlpha='20' divLineColor='006397' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='666666' shadowAlpha='40' labelStep='2' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,006397' bgAngle='270' bgAlpha='10,10'>";
  $piez = "<styles>                
		<definition>
                         
			<style name='CaptionFont' type='font' size='12'/>
		</definition>
		<application>
			<apply toObject='CAPTION' styles='CaptionFont' />
			<apply toObject='SUBCAPTION' styles='CaptionFont' />
		</application>
		
	</styles>
	
	<trendlines>
      <line startValue='".$porcen."' color='91C728' displayValue='Target' showOnTop='2'/>
    </trendlines>

</chart>";
	
  $cuerpo = $cabeza.$categoria.$use.$piez;

 	  return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/MSLine.swf", "ChartId",$cuerpo, "csaib", 750,350, 0, 0);
    		
		
}


 function ventasUseNegosio()
{
  

	$usuario = $this->usuarios->LoadUsuarioByIdDep(2);
		
	$categoria = '<categories >';
	for ($index = $this->_numeroSemana; $index >= 0 ; $index--) {
		  $var = 1;
		  
		  $semana = date('W') - $index;
		  
		  if ($semana <= 0) {
		  	$semanatitulo = 52 + $semana;  
		  }else{
		      $semanatitulo = $semana; 
		  }
 
		   $fecha = $this->chcalendario->ultimo($this->chcalendario->semana($index));
		   $fechar = explode('+',$fecha);
		   $categoria .= "<category label='".$semanatitulo."' />";
	}	
	
	$categoria .= '</categories>';    

	       $use = '';
	       
	       $porcentageTotal = 0;
	       
		   foreach ($usuario as $k){
		       
                
		      	$use .= "<dataset seriesName='".$k->getNombreUsuario()."' color='".$k->getColor()."' anchorBorderColor='".$k->getColor()."' anchorBgColor='#ffffff'>";
		      	
		        for ($index = $this->_numeroSemana; $index >= 0 ; $index--) {
		        	
		                $fecha = $this->chcalendario->ultimo($this->chcalendario->semana($index));
		                $fechar = explode('+',$fecha);
		                
		              if ($index == 0) {
		                	$fechaR1 = $fechar[0];
		                	$fechaR2 = date("Y-m-d");
		                	
		                	if (date("w") == 1)
		                	     $fechaR1 = $fechar[1]; 
		                	
		                }else{
		                	$fechaR1 = $fechar[0];
		                	$fechaR2 = $fechar[1];
		                }
		                
		                $arrayWhere = array(
		                                    "FechaHistorico >="       => $fechaR1,
		                                    "FechaHistorico <="       => $fechaR2,
		                                    "IdUsuarioHistorico"      => $k->getIdUsuario(),
		                                    "IdMotivoSalida"          => 6
		                                   );
		                                 
		                            
		                
		        	  	$cantida = $this->TransaccionHistorico->loadCantByWhere($arrayWhere);
		        	  	
		        	  	$use .= "<set value='".$cantida."' />";
		        	  	$porcentageTotal += $cantida;
		            
		            
	             }
	             
	         	$use .= "</dataset>";   
		      	
		   }
		   
          $porcentage = ($porcentageTotal / $this->_numeroSemana) / count($usuario);
		   
		$cabeza = "<chart caption='Ventas CSA' subcaption='' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2'   divLineAlpha='20' divLineColor='006397' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='666666' shadowAlpha='40' labelStep='2' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,006397' bgAngle='270' bgAlpha='10,10'>";
  $piez = "<styles>                
		<definition>
                         
			<style name='CaptionFont' type='font' size='12'/>
		</definition>
		<application>
			<apply toObject='CAPTION' styles='CaptionFont' />
			<apply toObject='SUBCAPTION' styles='CaptionFont' />
		</application>
	</styles>
	
	<trendlines>
      <line startValue='".$porcentage."' color='91C728' displayValue='Target' showOnTop='2'/>
    </trendlines>

</chart>";
	
  $cuerpo = $cabeza.$categoria.$use.$piez;
	
	  return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/MSLine.swf", "ChartId",$cuerpo, "csaV", 750,350, 0, 0);
    		
 }
 
 public function pizaCsaVentas($ojetos = false)
 {

 	$usuario = $this->usuarios->LoadUsuarioByIdDep(2);
 	$valueUsuario = array();
 	
 	/**
 	 * 
 	 * Contiene la logica de cuales de lo tres fitro se utilisara 
 	 * @var $valueUsuario
 	 * 1: logica de transacion de entrada por CSA
 	 * 2: logica de Seguimientos de TE por CSA
 	 * 3: ventas de CSA
 	 * 
 	 * @var $fechaF, $fechaS
 	 * 
 	 * contiene la fecha de fitro 
 	 * 
 	 */
 	
 	if ($this->_numeroSemana == 51) 
 	   $semana = 49;
 	else    
        $semana = $this->_numeroSemana;   
 	
 	$date = $this->chcalendario->semana($semana);
 	$fechaS = $date[6];
 	
    switch ($ojetos){
    	case 1:
    		
    		$titulo = "Inbound CSA"; 
    		
    		 foreach ($usuario as $usuarioData){
    		 	
    		 	$dataWhere = array('IdUsuario'           => $usuarioData->getIdUsuario(),
    		 	                   'DateSistema <='      => date("Y-m-d"),
    		 	                   'DateSistema >='      => $fechaS);
    		 	
    		 	$dataWhere2 = array('IdUsuario'           => $usuarioData->getIdUsuario(),
    		 	                   'FechaSistema <='      => date("Y-m-d"),
    		 	                   'FechaSistema >='      => $fechaS);
    		 	
    		 	$transacionA = $this->mtransaccionentrada->loadCantByWhere($dataWhere);
    		 	$transacionH = $this->TransaccionHistorico->loadCantByWhere($dataWhere2);
    		 	
    		 	$cantidadTotal = $transacionA + $transacionH;
    		 	
    		 	$valueUsuario[$usuarioData->getIdUsuario()] = $cantidadTotal;
    		 } 
    	break;

    	case 2:
    		$titulo = "Seguimiento CSA"; 
    		foreach ($usuario as $usuarioData){
    		 	$dataWhere = array('IdUsuario'              => $usuarioData->getIdUsuario(),
    		 	                   'DateSistema <='      => date("Y-m-d"),
    		 	                   'DateSistema >='      => $fechaS);
    		 	
    		 	$transacionA = $this->detallerentradas->loadDetalleCantidadArray($dataWhere);
    		 	
    		 	$cantidadTotal = $transacionA;
    		 	
    		 	$valueUsuario[$usuarioData->getIdUsuario()] = $cantidadTotal;
    		}
        break;

        case 3:
    		$titulo = "Venta CSA"; 
    		foreach ($usuario as $usuarioData){
    		 	$dataWhere = array('IdUsuario'            => $usuarioData->getIdUsuario(),
    		 	                   'FechaHistorico <='    => date("Y-m-d"),
    		 	                   'FechaHistorico >='    => $fechaS,
    		 	                   'IdMotivoSalida'       => 6);
    		 	
    		 	$transacionA = $this->TransaccionHistorico->loadCantByWhere($dataWhere);
    		 	
    		 	$cantidadTotal = $transacionA;
    		 	
    		 	$valueUsuario[$usuarioData->getIdUsuario()] = $cantidadTotal;
    		}
        break;  
    		
    		
    		
    	
    }

	$strXML = "";
    $strXML = "<chart caption = '".$titulo."' bgColor='#ffffff' baseFontSize='10' showValues='1' xAxisName='' >";
	         	
        	foreach ($usuario as $k)
        	{
        		
        		$strXML .= "<set label = '' color='".$k->getColor()."' value ='".$valueUsuario[$k->getIdUsuario()]."' />";
        	}
	   
	     
		
	
$strXML .= "</chart>";


return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/Pie3D.swf", "",$strXML, "Pizza".$ojetos, 235, 195, false);
	
 	
 }

}
?>